ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCA3M2ZiOTQzLi5iYTI1MGI2IDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0yLDYgKzIsOSBAQAogQ2hhbmdlcyBmb3IgVS1Cb290IDEuMS4zOgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCisqIEZpeCB0aW1lciBjb2RlIGZvciBBUk0gc3lzdGVtczogbWFrZSBzdXJlIHRoYXQgdWRlbGF5KCkgZG9lcyBub3QKKyAgcmVzZXQgdGltZXJzIHNvIGl0J3Mgc2F2ZSB0byB1c2UgdWRlbGF5KCkgaW4gdGltZW91dCBjb2RlLgorCiAqIFBhdGNoIGJ5IE1hdGhpYXMgS/xzdGVyLCAyMyBOb3YgMjAwNDoKICAgYWRkIHVkZWxheSBzdXBwb3J0IGZvciB0aGUgbWNmNTI4MiBjcHUKIApkaWZmIC0tZ2l0IGEvY3B1L2FybTExMzYvaW50ZXJydXB0cy5jIGIvY3B1L2FybTExMzYvaW50ZXJydXB0cy5jCmluZGV4IGM4MGQ5YTUuLjIzMjM2ZGMgMTAwNjQ0Ci0tLSBhL2NwdS9hcm0xMTM2L2ludGVycnVwdHMuYworKysgYi9jcHUvYXJtMTEzNi9pbnRlcnJ1cHRzLmMKQEAgLTI1NCw2ICsyNTQsOCBAQAogdm9pZCB1ZGVsYXlfbWFza2VkICh1bnNpZ25lZCBsb25nIHVzZWMpCiB7CiAJdWxvbmcgdG1vOworCXVsb25nIGVuZHRpbWU7CisJc2lnbmVkIGxvbmcgZGlmZjsKIAogCWlmICh1c2VjID49IDEwMDApIHsJCQkvKiBpZiAiYmlnIiBudW1iZXIsIHNwcmVhZCBub3JtYWxpemF0aW9uIHRvIHNlY29uZHMgKi8KIAkJdG1vID0gdXNlYyAvIDEwMDA7CQkvKiBzdGFydCB0byBub3JtYWxpemUgZm9yIHVzZWMgdG8gdGlja3MgcGVyIHNlYyAqLwpAQCAtMjYzLDkgKzI2NSwxMiBAQAogCQl0bW8gPSB1c2VjICogQ0ZHX0haOwogCQl0bW8gLz0gKDEwMDAqMTAwMCk7CiAJfQotCXJlc2V0X3RpbWVyX21hc2tlZCAoKTsJCS8qIHNldCAiYWR2YW5jaW5nIiB0aW1lc3RhbXAgdG8gMCwgc2V0IGxhc3RpbmMgdmF1bGUgKi8KLQl3aGlsZSAoZ2V0X3RpbWVyX21hc2tlZCAoKSA8IHRtbykgLyogd2FpdCBmb3IgdGltZSBzdGFtcCB0byBvdmVydGFrZSB0aWNrIG51bWJlci4qLwotCQkvKiBOT1AgKi87CisJZW5kdGltZSA9IGdldF90aW1lcl9tYXNrZWQgKCkgKyB0bW87CisKKwlkbyB7CisJCXVsb25nIG5vdyA9IGdldF90aW1lcl9tYXNrZWQgKCk7CisJCWRpZmYgPSBlbmR0aW1lIC0gbm93OworCX0gd2hpbGUgKGRpZmYgPj0gMCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9jcHUvYXJtNzIwdC9pbnRlcnJ1cHRzLmMgYi9jcHUvYXJtNzIwdC9pbnRlcnJ1cHRzLmMKaW5kZXggYTdlYTcwYS4uYWIyOGU2MCAxMDA2NDQKLS0tIGEvY3B1L2FybTcyMHQvaW50ZXJydXB0cy5jCisrKyBiL2NwdS9hcm03MjB0L2ludGVycnVwdHMuYwpAQCAtMzU4LDE1ICszNTgsMjQgQEAKIHZvaWQgdWRlbGF5X21hc2tlZCAodW5zaWduZWQgbG9uZyB1c2VjKQogewogCXVsb25nIHRtbzsKKwl1bG9uZyBlbmR0aW1lOworCXNpZ25lZCBsb25nIGRpZmY7CiAKLQl0bW8gPSB1c2VjIC8gMTAwMDsKLQl0bW8gKj0gQ0ZHX0haOwotCXRtbyAvPSAxMDAwOworCWlmICh1c2VjID49IDEwMDApIHsKKwkJdG1vID0gdXNlYyAvIDEwMDA7CisJCXRtbyAqPSBDRkdfSFo7CisJCXRtbyAvPSAxMDAwOworCX0gZWxzZSB7CisJCXRtbyA9IHVzZWMgKiBDRkdfSFo7CisJCXRtbyAvPSAoMTAwMCoxMDAwKTsKKwl9CiAKLQlyZXNldF90aW1lcl9tYXNrZWQgKCk7CisJZW5kdGltZSA9IGdldF90aW1lcl9tYXNrZWQgKCkgKyB0bW87CiAKLQl3aGlsZSAoZ2V0X3RpbWVyX21hc2tlZCAoKSA8IHRtbykKLQkJLypOT1AqLzsKKwlkbyB7CisJCXVsb25nIG5vdyA9IGdldF90aW1lcl9tYXNrZWQgKCk7CisJCWRpZmYgPSBlbmR0aW1lIC0gbm93OworCX0gd2hpbGUgKGRpZmYgPj0gMCk7CiB9CiAKICNlbGlmIGRlZmluZWQoQ09ORklHX1MzQzQ1MTBCKQpkaWZmIC0tZ2l0IGEvY3B1L2FybTkyMHQvaW14L2ludGVycnVwdHMuYyBiL2NwdS9hcm05MjB0L2lteC9pbnRlcnJ1cHRzLmMKaW5kZXggMTJhZTJmYS4uMmYyZTc1NCAxMDA2NDQKLS0tIGEvY3B1L2FybTkyMHQvaW14L2ludGVycnVwdHMuYworKysgYi9jcHUvYXJtOTIwdC9pbXgvaW50ZXJydXB0cy5jCkBAIC04MSwxMCArODEsMTMgQEAKIAogdm9pZCB1ZGVsYXlfbWFza2VkICh1bnNpZ25lZCBsb25nIHVzZWMpCiB7Ci0JdWxvbmcgc3RhcnQgPSBnZXRfdGltZXJfbWFza2VkKCk7CisJdWxvbmcgZW5kdGltZSA9IGdldF90aW1lcl9tYXNrZWQoKSArIHVzZWM7CisJc2lnbmVkIGxvbmcgZGlmZjsKIAotCXdoaWxlIChnZXRfdGltZXJfbWFza2VkICgpIC0gc3RhcnQgPCB1c2VjICkKLQkJLypOT1AqLzsKKwlkbyB7CisJCXVsb25nIG5vdyA9IGdldF90aW1lcl9tYXNrZWQgKCk7CisJCWRpZmYgPSBlbmR0aW1lIC0gbm93OworCX0gd2hpbGUgKGRpZmYgPj0gMCk7CiB9CiAKIHZvaWQgdWRlbGF5ICh1bnNpZ25lZCBsb25nIHVzZWMpCmRpZmYgLS1naXQgYS9jcHUvYXJtOTIwdC9zM2MyNHgwL2ludGVycnVwdHMuYyBiL2NwdS9hcm05MjB0L3MzYzI0eDAvaW50ZXJydXB0cy5jCmluZGV4IGY1ODFkNmQuLjg2ODYyMWYgMTAwNjQ0Ci0tLSBhL2NwdS9hcm05MjB0L3MzYzI0eDAvaW50ZXJydXB0cy5jCisrKyBiL2NwdS9hcm05MjB0L3MzYzI0eDAvaW50ZXJydXB0cy5jCkBAIC0xMzcsMTUgKzEzNywyNCBAQAogdm9pZCB1ZGVsYXlfbWFza2VkICh1bnNpZ25lZCBsb25nIHVzZWMpCiB7CiAJdWxvbmcgdG1vOworCXVsb25nIGVuZHRpbWU7CisJc2lnbmVkIGxvbmcgZGlmZjsKIAotCXRtbyA9IHVzZWMgLyAxMDAwOwotCXRtbyAqPSAodGltZXJfbG9hZF92YWwgKiAxMDApOwotCXRtbyAvPSAxMDAwOworCWlmICh1c2VjID49IDEwMDApIHsKKwkJdG1vID0gdXNlYyAvIDEwMDA7CisJCXRtbyAqPSAodGltZXJfbG9hZF92YWwgKiAxMDApOworCQl0bW8gLz0gMTAwMDsKKwl9IGVsc2UgeworCQl0bW8gPSB1c2VjICogKHRpbWVyX2xvYWRfdmFsICogMTAwKTsKKwkJdG1vIC89ICgxMDAwKjEwMDApOworCX0KIAotCXJlc2V0X3RpbWVyX21hc2tlZCAoKTsKKwllbmR0aW1lID0gZ2V0X3RpbWVyX21hc2tlZCAoKSArIHRtbzsKIAotCXdoaWxlIChnZXRfdGltZXJfbWFza2VkICgpIDwgdG1vKQotCQkvKk5PUCovOworCWRvIHsKKwkJdWxvbmcgbm93ID0gZ2V0X3RpbWVyX21hc2tlZCAoKTsKKwkJZGlmZiA9IGVuZHRpbWUgLSBub3c7CisJfSB3aGlsZSAoZGlmZiA+PSAwKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2NwdS9hcm05MjV0L2ludGVycnVwdHMuYyBiL2NwdS9hcm05MjV0L2ludGVycnVwdHMuYwppbmRleCBlYTRhYTNiLi41N2JiNGVhIDEwMDY0NAotLS0gYS9jcHUvYXJtOTI1dC9pbnRlcnJ1cHRzLmMKKysrIGIvY3B1L2FybTkyNXQvaW50ZXJydXB0cy5jCkBAIC0yNzUsMjAgKzI3NSwyNCBAQAogI2Vsc2UKIAogCXVsb25nIHRtbzsKKwl1bG9uZyBlbmR0aW1lOworCXNpZ25lZCBsb25nIGRpZmY7CiAKLQlpZih1c2VjID49IDEwMDApewkJLyogaWYgImJpZyIgbnVtYmVyLCBzcHJlYWQgbm9ybWFsaXphdGlvbiB0byBzZWNvbmRzICovCisJaWYgKHVzZWMgPj0gMTAwMCkgewkJLyogaWYgImJpZyIgbnVtYmVyLCBzcHJlYWQgbm9ybWFsaXphdGlvbiB0byBzZWNvbmRzICovCiAJCXRtbyA9IHVzZWMgLyAxMDAwOwkvKiBzdGFydCB0byBub3JtYWxpemUgZm9yIHVzZWMgdG8gdGlja3MgcGVyIHNlYyAqLwogCQl0bW8gKj0gQ0ZHX0haOwkJLyogZmluZCBudW1iZXIgb2YgInRpY2tzIiB0byB3YWl0IHRvIGFjaGlldmUgdGFyZ2V0ICovCiAJCXRtbyAvPSAxMDAwOwkJLyogZmluaXNoIG5vcm1hbGl6ZS4gKi8KLQl9ZWxzZXsJCQkJLyogZWxzZSBzbWFsbCBudW1iZXIsIGRvbid0IGtpbGwgaXQgcHJpb3IgdG8gSFogbXVsdGlwbHkgKi8KKwl9IGVsc2UgewkJCS8qIGVsc2Ugc21hbGwgbnVtYmVyLCBkb24ndCBraWxsIGl0IHByaW9yIHRvIEhaIG11bHRpcGx5ICovCiAJCXRtbyA9IHVzZWMgKiBDRkdfSFo7CiAJCXRtbyAvPSAoMTAwMCoxMDAwKTsKIAl9CiAKLQlyZXNldF90aW1lcl9tYXNrZWQgKCk7CS8qIHNldCAiYWR2YW5jaW5nIiB0aW1lc3RhbXAgdG8gMCwgc2V0IGxhc3RkZWMgdmF1bGUgKi8KKwllbmR0aW1lID0gZ2V0X3RpbWVyX21hc2tlZCAoKSArIHRtbzsKIAotCXdoaWxlIChnZXRfdGltZXJfbWFza2VkICgpIDwgdG1vKSAvKiB3YWl0IGZvciB0aW1lIHN0YW1wIHRvIG92ZXJ0YWtlIHRpY2sgbnVtYmVyLiovCi0JCS8qTk9QKi87CisJZG8geworCQl1bG9uZyBub3cgPSBnZXRfdGltZXJfbWFza2VkICgpOworCQlkaWZmID0gZW5kdGltZSAtIG5vdzsKKwl9IHdoaWxlIChkaWZmID49IDApOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL2NwdS9hcm05MjZlanMvaW50ZXJydXB0cy5jIGIvY3B1L2FybTkyNmVqcy9pbnRlcnJ1cHRzLmMKaW5kZXggMDYyNTE1ZS4uYWU4MDgyZCAxMDA2NDQKLS0tIGEvY3B1L2FybTkyNmVqcy9pbnRlcnJ1cHRzLmMKKysrIGIvY3B1L2FybTkyNmVqcy9pbnRlcnJ1cHRzLmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCiAgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogICoKICAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCkBAIC0xMTYsMTUgKzExNiwxNSBAQAogCiAJZmxhZ3MgPSBjb25kaXRpb25fY29kZXMgKHJlZ3MpOwogCi0JcHJpbnRmICgicGMgOiBbPCUwOGx4Pl0gICAgbHIgOiBbPCUwOGx4Pl1cbiIKLQkJInNwIDogJTA4bHggIGlwIDogJTA4bHggIGZwIDogJTA4bHhcbiIsCisJcHJpbnRmICgicGMgOiBbPCUwOGx4Pl0JICAgbHIgOiBbPCUwOGx4Pl1cbiIKKwkJInNwIDogJTA4bHggIGlwIDogJTA4bHgJIGZwIDogJTA4bHhcbiIsCiAJCWluc3RydWN0aW9uX3BvaW50ZXIgKHJlZ3MpLAogCQlyZWdzLT5BUk1fbHIsIHJlZ3MtPkFSTV9zcCwgcmVncy0+QVJNX2lwLCByZWdzLT5BUk1fZnApOwotCXByaW50ZiAoInIxMDogJTA4bHggIHI5IDogJTA4bHggIHI4IDogJTA4bHhcbiIsCisJcHJpbnRmICgicjEwOiAlMDhseCAgcjkgOiAlMDhseAkgcjggOiAlMDhseFxuIiwKIAkJcmVncy0+QVJNX3IxMCwgcmVncy0+QVJNX3I5LCByZWdzLT5BUk1fcjgpOwotCXByaW50ZiAoInI3IDogJTA4bHggIHI2IDogJTA4bHggIHI1IDogJTA4bHggIHI0IDogJTA4bHhcbiIsCisJcHJpbnRmICgicjcgOiAlMDhseCAgcjYgOiAlMDhseAkgcjUgOiAlMDhseCAgcjQgOiAlMDhseFxuIiwKIAkJcmVncy0+QVJNX3I3LCByZWdzLT5BUk1fcjYsIHJlZ3MtPkFSTV9yNSwgcmVncy0+QVJNX3I0KTsKLQlwcmludGYgKCJyMyA6ICUwOGx4ICByMiA6ICUwOGx4ICByMSA6ICUwOGx4ICByMCA6ICUwOGx4XG4iLAorCXByaW50ZiAoInIzIDogJTA4bHggIHIyIDogJTA4bHgJIHIxIDogJTA4bHggIHIwIDogJTA4bHhcbiIsCiAJCXJlZ3MtPkFSTV9yMywgcmVncy0+QVJNX3IyLCByZWdzLT5BUk1fcjEsIHJlZ3MtPkFSTV9yMCk7CiAJcHJpbnRmICgiRmxhZ3M6ICVjJWMlYyVjIiwKIAkJZmxhZ3MgJiBDQ19OX0JJVCA/ICdOJyA6ICduJywKQEAgLTI0MiwxNyArMjQyLDE3IEBACiB7CiAJdWxvbmcgdG1vLCB0bXA7CiAKLQlpZih1c2VjID49IDEwMDApeyAgICAgICAgICAgICAgIC8qIGlmICJiaWciIG51bWJlciwgc3ByZWFkIG5vcm1hbGl6YXRpb24gdG8gc2Vjb25kcyAqLwotCQl0bW8gPSB1c2VjIC8gMTAwMDsgICAgICAvKiBzdGFydCB0byBub3JtYWxpemUgZm9yIHVzZWMgdG8gdGlja3MgcGVyIHNlYyAqLwotCQl0bW8gKj0gQ0ZHX0haOyAgICAgICAgICAvKiBmaW5kIG51bWJlciBvZiAidGlja3MiIHRvIHdhaXQgdG8gYWNoaWV2ZSB0YXJnZXQgKi8KLQkJdG1vIC89IDEwMDA7ICAgICAgICAgICAgLyogZmluaXNoIG5vcm1hbGl6ZS4gKi8KLQl9ZWxzZXsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVsc2Ugc21hbGwgbnVtYmVyLCBkb24ndCBraWxsIGl0IHByaW9yIHRvIEhaIG11bHRpcGx5ICovCisJaWYodXNlYyA+PSAxMDAwKXsJCS8qIGlmICJiaWciIG51bWJlciwgc3ByZWFkIG5vcm1hbGl6YXRpb24gdG8gc2Vjb25kcyAqLworCQl0bW8gPSB1c2VjIC8gMTAwMDsJLyogc3RhcnQgdG8gbm9ybWFsaXplIGZvciB1c2VjIHRvIHRpY2tzIHBlciBzZWMgKi8KKwkJdG1vICo9IENGR19IWjsJCS8qIGZpbmQgbnVtYmVyIG9mICJ0aWNrcyIgdG8gd2FpdCB0byBhY2hpZXZlIHRhcmdldCAqLworCQl0bW8gLz0gMTAwMDsJCS8qIGZpbmlzaCBub3JtYWxpemUuICovCisJfWVsc2V7CQkJCS8qIGVsc2Ugc21hbGwgbnVtYmVyLCBkb24ndCBraWxsIGl0IHByaW9yIHRvIEhaIG11bHRpcGx5ICovCiAJCXRtbyA9IHVzZWMgKiBDRkdfSFo7CiAJCXRtbyAvPSAoMTAwMCoxMDAwKTsKIAl9CiAKIAl0bXAgPSBnZXRfdGltZXIgKDApOwkJLyogZ2V0IGN1cnJlbnQgdGltZXN0YW1wICovCi0JaWYoICh0bW8gKyB0bXAgKyAxKSA8IHRtcCApIAkvKiBpZiBzZXR0aW5nIHRoaXMgZm9yZHdhcmQgd2lsbCByb2xsIHRpbWUgc3RhbXAgKi8KKwlpZiggKHRtbyArIHRtcCArIDEpIDwgdG1wICkJLyogaWYgc2V0dGluZyB0aGlzIGZvcmR3YXJkIHdpbGwgcm9sbCB0aW1lIHN0YW1wICovCiAJCXJlc2V0X3RpbWVyX21hc2tlZCAoKTsJLyogcmVzZXQgImFkdmFuY2luZyIgdGltZXN0YW1wIHRvIDAsIHNldCBsYXN0ZGVjIHZhbHVlICovCiAJZWxzZQogCQl0bW8gKz0gdG1wOwkJLyogZWxzZSwgc2V0IGFkdmFuY2luZyBzdGFtcCB3YWtlIHVwIHRpbWUgKi8KQEAgLTI2NSw3ICsyNjUsNyBAQAogewogCS8qIHJlc2V0IHRpbWUgKi8KIAlsYXN0ZGVjID0gUkVBRF9USU1FUjsgIC8qIGNhcHVyZSBjdXJyZW50IGRlY3JlbWVudGVyIHZhbHVlIHRpbWUgKi8KLQl0aW1lc3RhbXAgPSAwOyAgICAgICAgIC8qIHN0YXJ0ICJhZHZhbmNpbmciIHRpbWUgc3RhbXAgZnJvbSAwICovCisJdGltZXN0YW1wID0gMDsJICAgICAgIC8qIHN0YXJ0ICJhZHZhbmNpbmciIHRpbWUgc3RhbXAgZnJvbSAwICovCiB9CiAKIHVsb25nIGdldF90aW1lcl9tYXNrZWQgKHZvaWQpCkBAIC0yOTIsMjAgKzI5MiwyNCBAQAogdm9pZCB1ZGVsYXlfbWFza2VkICh1bnNpZ25lZCBsb25nIHVzZWMpCiB7CiAJdWxvbmcgdG1vOworCXVsb25nIGVuZHRpbWU7CisJc2lnbmVkIGxvbmcgZGlmZjsKIAotCWlmKHVzZWMgPj0gMTAwMCl7ICAgICAgICAgICAgICAgLyogaWYgImJpZyIgbnVtYmVyLCBzcHJlYWQgbm9ybWFsaXphdGlvbiB0byBzZWNvbmRzICovCi0JCXRtbyA9IHVzZWMgLyAxMDAwOyAgICAgIC8qIHN0YXJ0IHRvIG5vcm1hbGl6ZSBmb3IgdXNlYyB0byB0aWNrcyBwZXIgc2VjICovCi0JCXRtbyAqPSBDRkdfSFo7ICAgICAgICAgIC8qIGZpbmQgbnVtYmVyIG9mICJ0aWNrcyIgdG8gd2FpdCB0byBhY2hpZXZlIHRhcmdldCAqLwotCQl0bW8gLz0gMTAwMDsgICAgICAgICAgICAvKiBmaW5pc2ggbm9ybWFsaXplLiAqLwotCX1lbHNleyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZWxzZSBzbWFsbCBudW1iZXIsIGRvbid0IGtpbGwgaXQgcHJpb3IgdG8gSFogbXVsdGlwbHkgKi8KKwlpZiAodXNlYyA+PSAxMDAwKSB7CQkvKiBpZiAiYmlnIiBudW1iZXIsIHNwcmVhZCBub3JtYWxpemF0aW9uIHRvIHNlY29uZHMgKi8KKwkJdG1vID0gdXNlYyAvIDEwMDA7CS8qIHN0YXJ0IHRvIG5vcm1hbGl6ZSBmb3IgdXNlYyB0byB0aWNrcyBwZXIgc2VjICovCisJCXRtbyAqPSBDRkdfSFo7CQkvKiBmaW5kIG51bWJlciBvZiAidGlja3MiIHRvIHdhaXQgdG8gYWNoaWV2ZSB0YXJnZXQgKi8KKwkJdG1vIC89IDEwMDA7CQkvKiBmaW5pc2ggbm9ybWFsaXplLiAqLworCX0gZWxzZSB7CQkJLyogZWxzZSBzbWFsbCBudW1iZXIsIGRvbid0IGtpbGwgaXQgcHJpb3IgdG8gSFogbXVsdGlwbHkgKi8KIAkJdG1vID0gdXNlYyAqIENGR19IWjsKIAkJdG1vIC89ICgxMDAwKjEwMDApOwogCX0KIAotCXJlc2V0X3RpbWVyX21hc2tlZCAoKTsJLyogc2V0ICJhZHZhbmNpbmciIHRpbWVzdGFtcCB0byAwLCBzZXQgbGFzdGRlYyB2YXVsZSAqLworCWVuZHRpbWUgPSBnZXRfdGltZXJfbWFza2VkICgpICsgdG1vOwogCi0Jd2hpbGUgKGdldF90aW1lcl9tYXNrZWQgKCkgPCB0bW8pIC8qIHdhaXQgZm9yIHRpbWUgc3RhbXAgdG8gb3ZlcnRha2UgdGljayBudW1iZXIuKi8KLQkJLypOT1AqLzsKKwlkbyB7CisJCXVsb25nIG5vdyA9IGdldF90aW1lcl9tYXNrZWQgKCk7CisJCWRpZmYgPSBlbmR0aW1lIC0gbm93OworCX0gd2hpbGUgKGRpZmYgPj0gMCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9jcHUvYXQ5MXJtOTIwMC9pbnRlcnJ1cHRzLmMgYi9jcHUvYXQ5MXJtOTIwMC9pbnRlcnJ1cHRzLmMKaW5kZXggZjE1YzU4My4uY2NjYzQwNSAxMDA2NDQKLS0tIGEvY3B1L2F0OTFybTkyMDAvaW50ZXJydXB0cy5jCisrKyBiL2NwdS9hdDkxcm05MjAwL2ludGVycnVwdHMuYwpAQCAtMjMxLDIwICsyMzEsMTkgQEAKIHZvaWQgdWRlbGF5X21hc2tlZCAodW5zaWduZWQgbG9uZyB1c2VjKQogewogCXVsb25nIHRtbzsKKwl1bG9uZyBlbmR0aW1lOworCXNpZ25lZCBsb25nIGRpZmY7CiAKLSNpZiAwIC8qIGRvZXNuJ3Qgd29yayBmb3IgdXNlYyA8IDEwMDAgKi8KLQl0bW8gPSB1c2VjIC8gMTAwMDsKLQl0bW8gKj0gQ0ZHX0haX0NMT0NLOwotI2Vsc2UKIAl0bW8gPSBDRkdfSFpfQ0xPQ0sgLyAxMDAwOwogCXRtbyAqPSB1c2VjOwotI2VuZGlmCiAJdG1vIC89IDEwMDA7CiAKLQlyZXNldF90aW1lcl9tYXNrZWQgKCk7CisJZW5kdGltZSA9IGdldF90aW1lcl9yYXcgKCkgKyB0bW87CiAKLQl3aGlsZSAoZ2V0X3RpbWVyX3JhdyAoKSA8IHRtbykKLQkJLypOT1AqLzsKKwlkbyB7CisJCXVsb25nIG5vdyA9IGdldF90aW1lcl9yYXcgKCk7CisJCWRpZmYgPSBlbmR0aW1lIC0gbm93OworCX0gd2hpbGUgKGRpZmYgPj0gMCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9jcHUvYXQ5MXJtOTIwMC9zdGFydC5TIGIvY3B1L2F0OTFybTkyMDAvc3RhcnQuUwppbmRleCBlODk3ZTZiLi4xODgxYWIxIDEwMDY0NAotLS0gYS9jcHUvYXQ5MXJtOTIwMC9zdGFydC5TCisrKyBiL2NwdS9hdDkxcm05MjAwL3N0YXJ0LlMKQEAgLTExNywxMSArMTE3LDExIEBACiAKICNpZmRlZiBDT05GSUdfSU5JVF9DUklUSUNBTAogCS8qIHNjcmF0Y2ggc3RhY2sgKi8KLQlsZHIgCXIxLCA9MHgwMDIwNDAwMAorLyoqKioJbGRyIAlyMSwgPTB4MDAyMDQwMDAJCSoqKiovCiAJLyogSW5zdXJlIHdvcmQgYWxpZ25tZW50ICovCi0JYmljICAgICByMSwgcjEsICMzCisvKioqKgliaWMgICAgIHIxLCByMSwgIzMJCSoqKiovCiAJLyogSW5pdCBzdGFjayBTWVMJICovCi0JbW92ICAgICBzcCwgcjEKKy8qKioqCW1vdiAgICAgc3AsIHIxCQkJKioqKi8KIAkvKgogCSAqIFRoaXMgZG9lcyBhIGxvdCBtb3JlIHRoYW4ganVzdCBzZXQgdXAgdGhlIG1lbW9yeSwgd2hpY2gKIAkgKiBpcyB3aHkgaXQncyBjYWxsZWQgbG93bGV2ZWxpbml0CmRpZmYgLS1naXQgYS9jcHUvbGg3YTQweC9pbnRlcnJ1cHRzLmMgYi9jcHUvbGg3YTQweC9pbnRlcnJ1cHRzLmMKaW5kZXggM2MyZGM0Zi4uMjNkODAzOSAxMDA2NDQKLS0tIGEvY3B1L2xoN2E0MHgvaW50ZXJydXB0cy5jCisrKyBiL2NwdS9saDdhNDB4L2ludGVycnVwdHMuYwpAQCAtMjgxLDI1ICsyODEsMjkgQEAKIHZvaWQgdWRlbGF5X21hc2tlZCAodW5zaWduZWQgbG9uZyB1c2VjKQogewogCXVsb25nIHRtbzsKKwl1bG9uZyBlbmR0aW1lOworCXNpZ25lZCBsb25nIGRpZmY7CiAKIAkvKiBub3JtYWxpemUgKi8KIAlpZiAodXNlYyA+PSAxMDAwKSB7CiAJCXRtbyA9IHVzZWMgLyAxMDAwOwogCQl0bW8gKj0gQ0ZHX0haOwogCQl0bW8gLz0gMTAwMDsKLQl9Ci0JZWxzZSB7CisJfSBlbHNlIHsKIAkJaWYgKHVzZWMgPiAxKSB7CiAJCQl0bW8gPSB1c2VjICogQ0ZHX0haOwogCQkJdG1vIC89ICgxMDAwKjEwMDApOwotCQl9Ci0JCWVsc2UKKwkJfSBlbHNlIHsKIAkJCXRtbyA9IDE7CisJCX0KIAl9CiAKLQlyZXNldF90aW1lcl9tYXNrZWQgKCk7CisJZW5kdGltZSA9IGdldF90aW1lcl9tYXNrZWQgKCkgKyB0bW87CiAKLQl3aGlsZSAoZ2V0X3RpbWVyX21hc2tlZCAoKSA8IHRtbyk7CisJZG8geworCQl1bG9uZyBub3cgPSBnZXRfdGltZXJfbWFza2VkICgpOworCQlkaWZmID0gZW5kdGltZSAtIG5vdzsKKwl9IHdoaWxlIChkaWZmID49IDApOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvY3B1L3B4YS9pbnRlcnJ1cHRzLmMgYi9jcHUvcHhhL2ludGVycnVwdHMuYwppbmRleCBiMzM1YTgyLi4wNDc5YTEwIDEwMDY0NAotLS0gYS9jcHUvcHhhL2ludGVycnVwdHMuYworKysgYi9jcHUvcHhhL2ludGVycnVwdHMuYwpAQCAtMTkwLDYgKzE5MCw4IEBACiB2b2lkIHVkZWxheV9tYXNrZWQgKHVuc2lnbmVkIGxvbmcgdXNlYykKIHsKIAl1bG9uZyB0bW87CisJdWxvbmcgZW5kdGltZTsKKwlzaWduZWQgbG9uZyBkaWZmOwogCiAJaWYgKHVzZWMgPj0gMTAwMCkgewogCQl0bW8gPSB1c2VjIC8gMTAwMDsKQEAgLTIwMCwxMCArMjAyLDEyIEBACiAJCXRtbyAvPSAoMTAwMCoxMDAwKTsKIAl9CiAKLQlyZXNldF90aW1lcl9tYXNrZWQgKCk7CisJZW5kdGltZSA9IGdldF90aW1lcl9tYXNrZWQgKCkgKyB0bW87CiAKLQl3aGlsZSAodG1vID49IGdldF90aW1lcl9tYXNrZWQgKCkpCi0JCS8qTk9QKi87CisJZG8geworCQl1bG9uZyBub3cgPSBnZXRfdGltZXJfbWFza2VkICgpOworCQlkaWZmID0gZW5kdGltZSAtIG5vdzsKKwl9IHdoaWxlIChkaWZmID49IDApOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvY3B1L3MzYzQ0YjAvaW50ZXJydXB0cy5jIGIvY3B1L3MzYzQ0YjAvaW50ZXJydXB0cy5jCmluZGV4IGRlYTgxMTguLjVkMmMxM2QgMTAwNjQ0Ci0tLSBhL2NwdS9zM2M0NGIwL2ludGVycnVwdHMuYworKysgYi9jcHUvczNjNDRiMC9pbnRlcnJ1cHRzLmMKQEAgLTIxOSwxNSArMjE5LDIyIEBACiB2b2lkIHVkZWxheV9tYXNrZWQgKHVuc2lnbmVkIGxvbmcgdXNlYykKIHsKIAl1bG9uZyB0bW87CisJdWxvbmcgZW5kdGltZTsKKwlzaWduZWQgbG9uZyBkaWZmOwogCi0JdG1vID0gdXNlYyAvIDEwMDA7Ci0JdG1vICo9IENGR19IWjsKLQl0bW8gLz0gODsKKwlpZiAodXNlYyA+PSAxMDAwKSB7CisJCXRtbyA9IHVzZWMgLyAxMDAwOworCQl0bW8gKj0gQ0ZHX0haOworCQl0bW8gLz0gODsKKwl9IGVsc2UgeworCQl0bW8gPSB1c2VjICogQ0ZHX0haOworCQl0bW8gLz0gKDEwMDAqOCk7CisJfQogCi0JdG1vICs9IGdldF90aW1lciAoMCk7CisJZW5kdGltZSA9IGdldF90aW1lcigwKSArIHRtbzsKIAotCXJlc2V0X3RpbWVyX21hc2tlZCAoKTsKLQotCXdoaWxlIChnZXRfdGltZXJfbWFza2VkICgpIDwgdG1vKQotCQkvKk5PUCovOworCWRvIHsKKwkJdWxvbmcgbm93ID0gZ2V0X3RpbWVyX21hc2tlZCAoKTsKKwkJZGlmZiA9IGVuZHRpbWUgLSBub3c7CisJfSB3aGlsZSAoZGlmZiA+PSAwKTsKIH0KZGlmZiAtLWdpdCBhL2NwdS9zYTExMDAvaW50ZXJydXB0cy5jIGIvY3B1L3NhMTEwMC9pbnRlcnJ1cHRzLmMKaW5kZXggOTNhNzhkNy4uYjM5M2UwZCAxMDA2NDQKLS0tIGEvY3B1L3NhMTEwMC9pbnRlcnJ1cHRzLmMKKysrIGIvY3B1L3NhMTEwMC9pbnRlcnJ1cHRzLmMKQEAgLTIwNiwxNSArMjA2LDI0IEBACiB2b2lkIHVkZWxheV9tYXNrZWQgKHVuc2lnbmVkIGxvbmcgdXNlYykKIHsKIAl1bG9uZyB0bW87CisJdWxvbmcgZW5kdGltZTsKKwlzaWduZWQgbG9uZyBkaWZmOwogCi0JdG1vID0gdXNlYyAvIDEwMDA7Ci0JdG1vICo9IENGR19IWjsKLQl0bW8gLz0gMTAwMDsKKwlpZiAodXNlYyA+PSAxMDAwKSB7CisJCXRtbyA9IHVzZWMgLyAxMDAwOworCQl0bW8gKj0gQ0ZHX0haOworCQl0bW8gLz0gMTAwMDsKKwl9IGVsc2UgeworCQl0bW8gPSB1c2VjICogQ0ZHX0haOworCQl0bW8gLz0gKDEwMDAqMTAwMCk7CisJfQogCi0JcmVzZXRfdGltZXJfbWFza2VkICgpOworCWVuZHRpbWUgPSBnZXRfdGltZXJfbWFza2VkICgpICsgdG1vOwogCi0Jd2hpbGUgKHRtbyA+PSBnZXRfdGltZXJfbWFza2VkICgpKQotCQkvKk5PUCovOworCWRvIHsKKwkJdWxvbmcgbm93ID0gZ2V0X3RpbWVyX21hc2tlZCAoKTsKKwkJZGlmZiA9IGVuZHRpbWUgLSBub3c7CisJfSB3aGlsZSAoZGlmZiA+PSAwKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9jbWNfcHUyLmggYi9pbmNsdWRlL2NvbmZpZ3MvY21jX3B1Mi5oCmluZGV4IGVmMmQxYjcuLjk2YjcxNDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9jbWNfcHUyLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2NtY19wdTIuaApAQCAtMzMsNyArMzMsNyBAQAogCiAvKiBBUk0gYXN5bmNocm9ub3VzIGNsb2NrICovCiAjZGVmaW5lIEFUOTFDX01BSU5fQ0xPQ0sJMjA3MzYwMDAwCS8qIGZyb20gMTguNDMyIE1IeiBjcnlzdGFsICgxODQzMjAwMCAvIDQgKiA0NSkgKi8KLSNkZWZpbmUgQVQ5MUNfTUFTVEVSX0NMT0NLCTY5MTIwMDAwCS8qIHBlcmlwaGVyYWwgY2xvY2sgKEFUOTFDX01BU1RFUl9DTE9DSyAvIDMpICovCisjZGVmaW5lIEFUOTFDX01BU1RFUl9DTE9DSwkoQVQ5MUNfTUFJTl9DTE9DSy8zKQkvKiBwZXJpcGhlcmFsIGNsb2NrICovCiAKICNkZWZpbmUgQVQ5MV9TTE9XX0NMT0NLCQkzMjc2OAkvKiBzbG93IGNsb2NrICovCiAKQEAgLTIwMyw3ICsyMDMsNyBAQAogI2VuZGlmCS8qIF9fQVNTRU1CTFlfXyAqLwogCiAjZGVmaW5lIENGR19IWiAxMDAwCi0jZGVmaW5lIENGR19IWl9DTE9DSyBBVDkxQ19NQVNURVJfQ0xPQ0svMgkvKiBBVDkxQ19UQzBfQ01SIGlzIGltcGxpY2l0bHkgc2V0IHRvICovCisjZGVmaW5lIENGR19IWl9DTE9DSyAoQVQ5MUNfTUFTVEVSX0NMT0NLLzIpCS8qIEFUOTFDX1RDMF9DTVIgaXMgaW1wbGljaXRseSBzZXQgdG8gKi8KIAkJCQkJCS8qIEFUOTFDX1RDX1RJTUVSX0RJVjFfQ0xPQ0sgKi8KIAogI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFCSgzMioxMDI0KQkvKiByZWd1bGFyIHN0YWNrICovCg==